syn match slangOctal "\<0[0-9]\+\>" contains=slangOctalError
syn match slangOctalError "[89]\+" contained
syn match slangHex "\<0[xX][0-9A-Fa-f]*\>"
syn match slangDecimal "\<[1-9][0-9]*\>"
syn match slangFloat "\<[0-9]\+\."
syn match slangFloat "\<[0-9]\+\.[0-9]\+\([Ee][-+]\=[0-9]\+\)\=\>"
syn match slangFloat "\<[0-9]\+\.[Ee][-+]\=[0-9]\+\>"
syn match slangFloat "\<[0-9]\+[Ee][-+]\=[0-9]\+\>"
syn match slangFloat "\.[0-9]\+\([Ee][-+]\=[0-9]\+\)\=\>"
syn match slangImaginary "\.[0-9]\+\([Ee][-+]\=[0-9]*\)\=[ij]\>"
syn match slangImaginary "\<[0-9]\+\(\.[0-9]*\)\=\([Ee][-+]\=[0-9]\+\)\=[ij]\>"
syn region slangString oneline start='"' end='"' skip='\\"'
syn match slangCharacter "'[^\\]'"
syn match slangCharacter "'\\.'"
syn match slangCharacter "'\\[0-7]\{1,3}'"
syn match slangCharacter "'\\d[0-9]\{1,3}'"
syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'"
syn match slangDelim "[][{};:,]"
syn match slangOperator "[-%+/&*=<>|!~^@]"
"catch errors caused by wrong parenthesis
syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError
syn match slangParenError ")"
syn match slangComment "%.*$"
syn keyword slangOperator sizeof
syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber
" Default links
if !exists("did_slang_syntax_inits")
let did_slang_syntax_inits = 1
" The default methods for highlighting. Can be overridden later